/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.toto.entity;

import java.rmi.RemoteException;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.FinderException;
import javax.ejb.RemoveException;

/**
 *
 * @author Administrator
 */
public abstract class UserBean implements EntityBean
{
  private EntityContext entityContext;

  /******************************/
  //  get/set抽象方法开始
  /******************************/
  public abstract String getUserId();
  public abstract void setUserId(String userId);
  public abstract String getName();
  public abstract void setName(String name);
  public abstract boolean getGender();
  public abstract void setGender(boolean gender);
  /*******************************/
  //  get/set抽象方法结束。
  /*******************************/

  /**
   * ejbCreate方法是容器调用的，一般用来初始化
   * 每一个远程接口的create方法，
   * 在bean类中都必须要有一个ejbCreate和一个ejbPostCreate方法与之对应
   * ejbCreate方法的返回值类型必须是entity bean的primary key
   * @throws CreateException
   */
  public UserPK ejbCreate(String userId, String name, boolean gender) throws CreateException
  {
    setUserId(userId);
    setName(name);
    setGender(gender);
    return null;
  }
  /**
   * 每一个ejbCreate必须有对应的ejbPostCreate方法
   * 参数必须和ejbCreate方法参数一致。
   * 这两个方法不同之处在于，
   * ejbPostCreate方法不抛出CreateException,ejbCreate方法必须抛出
   * 返回值类型也不同，ejbPostCreate可以返回void
   */
  public void ejbPostCreate(String userId, String name, boolean gender)
  {
     // Ingored
  }
  /**
   * 
   * @param ctx
   * @throws EJBException
   * @throws RemoteException
   */
  public void setEntityContext(EntityContext ctx) throws EJBException, RemoteException
  {
    this.entityContext = ctx;
  }
  /**
   * 容器调用
   * 容器减少池中的bean时使用
   * @throws EJBException
   * @throws RemoteException
   */
  public void unsetEntityContext() throws EJBException, RemoteException
  {
    this.entityContext = null;
  }

  /**
   * 容器在移除ejb实例的时候调用此方法
   * @throws RemoveException
   * @throws EJBException
   * @throws RemoteException
   */
  public void ejbRemove() throws RemoveException, EJBException, RemoteException
  {
    // Ingored
  }

  public void ejbActivate() throws EJBException, RemoteException
  {
    // Ingored
  }

  public void ejbPassivate() throws EJBException, RemoteException
  {
    // 不清楚
  }

  public void ejbLoad() throws EJBException, RemoteException
  {
    // 不清楚
  }

  public void ejbStore() throws EJBException, RemoteException
  {
    // 不清楚
  }
  public abstract Collection ejbSelectUserName(String userId) throws FinderException;

  public Collection ejbHomeSearchByUserId(String userId)
  {
    Collection collection = null;
    try
    {
      collection = this.ejbSelectUserName(userId);
    }
    catch (FinderException ex)
    {
      Logger.getLogger(UserBean.class.getName()).log(Level.SEVERE, null, ex);
    }
    return collection;
  }
}
